package com.rd.student.ruanjian.class3.gaochenxi.LianXi1.LinkedListPrac;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

public class Practice2 {

      public static void main(String[] args) {
            ArrayList arrayList=new ArrayList();
            arrayList.add(1);
            arrayList.add(2);
            arrayList.add(3);

            /*
                  ● boolean hasNext()  如果被迭代的集合元素还没被遍历，则返回true
                  ● Object next()  返回集合里的下一个元素
                  ● void remove()  删除集合里上一次next方法返回的元素
             */

            //1.注意点：不可以在iterator的遍历过程中进行更改数值, 只能在while循环外面操作，具体操作如下：
            Iterator iterator = arrayList.iterator();
            while (iterator.hasNext()){
                  int i = (int) iterator.next();
                  //如果在遍历元素的过程中修改集合中的元素，会报错，在这里无法更改.....怎末班?
                  // if (i == 1) arrayList.remove(i);
            }
            System.out.println(arrayList);

            System.out.println("=========");
            LinkedList list=new LinkedList();
            list.add(1);
            list.add(2);
            list.add(3);

            Object o=null;
            Iterator it=list.iterator();
            while(it.hasNext()){
                  int i= (int) it.next();
                  System.out.println(i);
                  if(i==1) o=i;//找到这个元素之后，把它赋值为i
            }
            //2.注意点：LinkedList类中一共有3个remove()方法，一个啥也不写，一个传int参，一个直接写删谁
            /*
                  LinkedList中一共有3个remove()方法:

                   E remove()
                        获取并移除此列表的头（第一个元素）。
                  E remove(int index)
                        移除此列表中指定位置处的元素。
                  boolean remove(Object o)  本次使用（√）
                        从此列表中移除首次出现的指定元素（如果存在）。
             */
            boolean removes = list.remove(o);
            System.out.println("是否删除: "+removes);
            System.out.println(list);
            System.out.println("----------");
      }
}
